//【数字】
/**
 * 数字均为双精度浮点类型（double-precision 64-bit binary format IEEE 754）
 * 即一个介于 ±2^−1023 和 ±2^+1024 之间的数字
 * 或约为 ±10^−308 到 ±10^+308，数字精度为 53 位
 * 数字类型也还能表示三种符号值：+Infinity（正无穷）、-Infinity（负无穷）和 NaN (not-a-number，非数字)
 * 不能让 BigInt 和 Number 直接进行运算，你也不能用 Math 对象去操作 BigInt 数字
 */

/**
 * 十进制数字
 * 1234567890
 * 42
 * 请注意，十进制可以以 0 开头，后面接其他十进制数字，
 * 但是假如下一个接的十进制数字小于 8，那么该数字将会被当做八进制处理
 */

/**
 * 二进制数字
 * 二进制数字语法是以零为开头，后面接一个小写或大写的拉丁文字母 B(0b 或者是 0B)
 * 示例：
 * 0b10000000000000000000000000000000 // 2147483648
 * 0b01111111100000000000000000000000 // 2139095040
 * 0B00000000011111111111111111111111 // 8388607
 */

/**
 * 八进制数字
 * 八进制数字语法是以 0 为开头的
 * 假如 0 后面的数字不在 0 到 7 的范围内，该数字将会被转换成十进制数字
 * 0O755 // 493
 * 0o644 // 420
 */

/**
 * 十六进制
 * 十六进制数字语法是以零为开头，后面接一个小写或大写的拉丁文字母 X(0x 或者是 0X)
 * 0xFFFFFFFFFFFFFFFFF // 295147905179352830000
 * 0x123456789ABCDEF   // 81985529216486900
 * 0XA                 // 10
 */

/**
 * 指数形式
 * 0e-5   // 0
 * 0e+5   // 0
 * 5e1    // 50
 * 175e-2 // 1.75
 * 1e3    // 1000
 * 1e-3   // 0.001
 * 1E3    // 1000
 */


//【数字对象】
/**
 * 内置的 Number 对象有一些有关数字的常量属性，如最大值、不是一个数字和无穷大的
 * 你不能改变这些属性，但可以按下边的方式使用它们：
 * const biggestNum = Number.MAX_VALUE;
 * const smallestNum = Number.MIN_VALUE;
 * const infiniteNum = Number.POSITIVE_INFINITY;
 * const negInfiniteNum = Number.NEGATIVE_INFINITY;
 * const notANum = Number.NaN;
 */


//数学对象（Math）
/**
 * 对于内置的Math数学常项和函数也有一些属性和方法
 * 比方说 Math 对象的 PI 属性会有属性值 pi (3.141...)，你可以像这样调用它：
 * Math.PI; // π
 *
 * 同理，标准数学函数也是 Math 的方法。这些包括三角函数、对数、指数，和其他函数
 * 比方说你想使用三角函数 sin，你可以这么写：
 * Math.sin(1.56);
 */


//日期对象
/**
 * JavaScript 没有日期数据类型
 * 但是你可以在你的程序里使用 Date 对象和其方法来处理日期和时间
 * Date 对象有大量的设置、获取和操作日期的方法。它并不含有任何属性
 * 创建一个日期对象：
 * var dateObjectName = new Date([parameters]);
 * 这里的 dateObjectName 对象是所创建的 Date 对象的一个名字
 * 它可以成为一个新的对象或者已存在的其他对象的一个属性
 */

/**
 * Date 对象的方法
 * 处理日期时间的 Date 对象方法可分为以下几类：
 *
 * "set" 方法，用于设置 Date 对象的日期和时间的值
 * "get" 方法，用于获取 Date 对象的日期和时间的值
 * "to" 方法，用于返回 Date 对象的字符串格式的值
 * parse 和 UTC 方法，用于解析 Date 字符串
 * 假设定义了如下日期：
 * var Xmas95 = new Date("December 25, 1995");
 *
 * 以下代码展示了今年剩下的天数：
 * var today = new Date();
 * var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // 设置日和月，注意，月份是 0-11
 * endYear.setFullYear(today.getFullYear()); // 把年设置为今年
 * var msPerDay = 24 * 60 * 60 * 1000; // 每天的毫秒数
 * var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
 * var daysLeft = Math.round(daysLeft); //返回今年剩下的天数
 *
 * parse 方法对于从日期字符串赋值给现有的 Date 对象很有用
 * 以下代码使用parse和setTime分配了一个日期值给IPOdate对象：
 * var IPOdate = new Date();
 * IPOdate.setTime(Date.parse("Aug 9, 1995"));
 *
 * 在下边的例子中，JSClock() 函数返回了用数字时钟格式的时间
 * 示例：
 * function JSClock() {
 *   var time = new Date();
 *   var hour = time.getHours();
 *   var minute = time.getMinutes();
 *   var second = time.getSeconds();
 *   var temp = "" + (hour > 12 ? hour - 12 : hour);
 *   if (hour == 0) temp = "12";
 *   temp += (minute < 10 ? ":0" : ":") + minute;
 *   temp += (second < 10 ? ":0" : ":") + second;
 *   temp += hour >= 12 ? " P.M." : " A.M.";
 *   return temp;
 * }
 */